import openpyxl
from config.config import *
from utils.decorator import group_sor_decorator


# def group_sort(data):
#     grouped_data = defaultdict(list)
#
#     # 遍历了excel读取出来的原始数据
#     for story in data:
#         grouped_data[story["story"]].append(story)
#
#     # 按照order值进行排序
#     # sorted_grouped_data = {}
#     # for story, item in grouped_data.items():
#     #     sorted_grouped_data[story] = sorted(item, key=itemgetter("order"))
#     sorted_grouped_data = {story: sorted(item, key=itemgetter("order")) for story, item in grouped_data.items()}
#
#     # 把数据结构还原成原始的
#     res_data = []
#     for value in sorted_grouped_data.values():
#         res_data.extend(value)
#     return res_data


# def group_sor_decorator(func):
#     def wrapper(*args, **kwargs):
#         grouped_data = defaultdict(list)
#         data = func()
#         # 遍历了excel读取出来的原始数据
#         for story in data:
#             grouped_data[story["story"]].append(story)
#
#         # 按照order值进行排序
#         # sorted_grouped_data = {}
#         # for story, item in grouped_data.items():
#         #     sorted_grouped_data[story] = sorted(item, key=itemgetter("order"))
#         sorted_grouped_data = {story: sorted(item, key=itemgetter("order")) for story, item in grouped_data.items()}
#
#         # 把数据结构还原成原始的
#         res_data = []
#         for value in sorted_grouped_data.values():
#             res_data.extend(value)
#         return res_data
#     return wrapper


# 打开excel文件
@group_sor_decorator
def read_excel(file_path = EXCEL_FILE, sheet_name = SHEET_NAME):

    workbook = openpyxl.load_workbook(file_path)  # 参数传的是文件路径

    # 选择表
    worksheet = workbook[sheet_name]

    # 读取数据
    # zip()函数的作用可以把可迭代对象打包成一个个元组    dict(zip(key，value)) 可以把读取到的数据变为字典类型，所以只需分别取出key行和value行即可

    data = []  # 空列表，用于组装字典
    keys = [cell.value for cell in worksheet[2]]  # 拿key行，也就是表的第二行，生成一个key的列表
    # 从第三行开始拿，只返回值
    for row in worksheet.iter_rows(min_row=3, values_only=True):
        # print(row)
        dict_data = dict(zip(keys, row))
        # 如果读取的 is_true 字段的值是 TRUE，则append，否则，不append
        print(dict_data)
        # if dict_data["is_true"]:
        #     data.append(dict_data)
        data.append(dict_data)
    # 关闭文件
    workbook.close()
    return data
